A virtual machine (VM) may comprise a software implementation of a machine (e.g., a computer) that is operative to execute programs like a physical machine. Virtualized computing elements include operating systems, applications, processors, and memory elements. Virtualization poses new challenges for input/output, commonly referred to as I/O, performance for physical computing devices. Input/output performance is critical to high performance computer systems, such as those found in modern data centers and cloud computing infrastructure. In response, input/output virtualization methods, commonly referred to as IOV, have been developed that provide hardware and software configurations that abstract underlying hardware interfaces utilized in communication technologies. In this manner, input/output devices may be virtualized and shared amongst multiple virtual machines.
Input/output virtualization techniques suffer from high overhead because of operational demands placed on key components, such as the virtual machine monitor (VMM or hypervisor), which manages key host resources and virtual machine functions. Operational demands include packet copying and interrupt handling. Single root input/output virtualization, commonly referred to as SR-IOV, capable devices provide a set of peripheral component interconnect (PCI) express (PCIe) functions designed to limit virtual machine monitor intervention in input/output virtualization systems, resulting in increased input/output performance. However, the performance increase has come at the cost of decreased control and manageability of input/output virtualization systems. Therefore, one design goal for input/output virtualization systems is to provide increased input/output performance without negatively effecting system manageability. Consequently, techniques designed to provide security, control, and manageability in high performance input/output virtualization systems are desirable.